home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / aliencontrol.demo < prev    next >
Text File  |  1997-01-31  |  8KB  |  505 lines

  1.  
  2. gotgun: dc.w 0
  3.  
  4. ItsABigNasty
  5.  
  6.  move.l #40*256,StepUpVal
  7.  move.l #40*256,thingheight
  8.  
  9.  st gotgun
  10.  tst.w 12(a0)
  11.  bge.s .stillalive
  12. .notthisone:
  13.  rts
  14. .stillalive:
  15.  
  16.  tst.b numlives(a0)
  17.  bgt.s .notdying
  18.  
  19.  move.b #0,numlives(a0)
  20.  
  21. ; move.w 8(a0),d0
  22. ; cmp.w #256*16,d0
  23. ; bge .onfloordead
  24. ; add.w #256,8(a0)
  25. ; bra .notthisone
  26. ;
  27. .onfloordead:
  28.  move.b #-1,16(a0)
  29.  rts
  30.  
  31. .notdying: 
  32.  
  33.  move.l #21*256*65536,deadframe
  34.  move.l #21*256*65536,8(a0)
  35.  move.w #8,screamsound
  36.  move.w #70,nasheight
  37.  bra WanderOrAttack
  38.  
  39. **************************************
  40.  
  41. ItsANasty:
  42.  move.l #40*256,StepUpVal
  43.  move.l #40*256,thingheight
  44.  clr.b gotgun
  45.  tst.w 12(a0)
  46.  bge.s .stillalive
  47. .notthisone:
  48.  rts
  49. .stillalive:
  50.  
  51.  tst.b numlives(a0)
  52.  bgt.s .notdying
  53.  move.b #0,numlives(a0)
  54.  
  55.  move.w 8(a0),d0
  56.  cmp.w #256*16,d0
  57.  bge .onfloordead
  58.  add.w #256,8(a0)
  59.  bra .notthisone
  60.  
  61. .onfloordead:
  62.  move.b #-1,16(a0)
  63.  rts
  64.  
  65. .notdying: 
  66.  move.l alframe,8(a0)
  67.  move.l #12*256*65536,deadframe
  68.  move.w #0,screamsound
  69.  move.w #50,nasheight
  70.  bra WanderOrAttack
  71.  
  72. WanderOrAttack
  73.  
  74.  
  75. ; Don't use control points, just
  76. ; wander at random
  77.  
  78.  move.w 12(a0),d2
  79.  blt .thisonedead
  80.  
  81.  tst.b 17(a0)
  82.  beq.s .cantseeplayer
  83.   
  84.  tst.w ObjTimer(a0)
  85.  bgt.s .cantseeplayer
  86.  
  87.  jsr GetRand
  88.  and.w #255,d0
  89.  cmp.w #250,d0
  90.  bgt.s .cantseeplayer
  91.   
  92.  bra Solo_Attack
  93.  
  94. .cantseeplayer 
  95.  
  96.  move.l #ZoneAdds,a5
  97.  move.l (a5,d2.w*4),objroom
  98.  
  99.  move.w TempFrames,d0
  100.  sub.w d0,ObjTimer(a0)
  101.  bgt.s .nonewdir
  102.  
  103.  tst.b 17(a0)
  104.  beq.s .keepwandering
  105.  
  106.  bra Solo_Attack
  107.  
  108. .keepwandering
  109.  
  110.  jsr GetRand
  111.  and.w #8190,d0
  112.  move.w d0,Facing(a0)
  113.  
  114.  jsr GetRand
  115.  and.w #15,d0
  116.  add.w #20,d0
  117.  move.w d0,ObjTimer(a0)
  118.  
  119. .nonewdir
  120.  
  121.  move.w (a0),d1
  122.  move.l #ObjectPoints,a1
  123.  lea (a1,d1.w*8),a1
  124.  move.w (a1),oldx 
  125.  move.w 4(a1),oldz
  126.  
  127.  move.w maxspd(a0),d2
  128.  muls TempFrames,d2
  129.  move.w d2,speed
  130.  move.w #20,Range
  131.  
  132.  move.w 4(a0),d0
  133.  ext.l d0
  134.  asl.l #7,d0
  135.  move.l d0,newy
  136.  
  137.  movem.l d0/a0/a1/a3/a4/d7,-(a7)
  138.  clr.b canshove
  139.  move.w Facing(a0),d0
  140.  jsr GoInDirection
  141.  move.w #%1000000000,wallflags
  142.  Jsr MoveObject
  143.  movem.l (a7)+,d0/a0/a1/a3/a4/d7
  144.  
  145.  tst.b hitwall
  146.  beq.s .nochangedir
  147.  move.w #-1,ObjTimer(a0)
  148. .nochangedir:
  149.  
  150.  move.l objroom,a2
  151.  move.w (a2),12(a0)
  152.  
  153.  move.w newx,(a1)
  154.  move.w newz,4(a1)
  155.  
  156.  move.w 10(a2),2(a0)
  157.  move.l 2(a2),d0
  158.  asr.l #7,d0
  159.  sub.w nasheight,d0
  160.  move.w d0,4(a0)
  161.  
  162.  move.b damagetaken(a0),d2
  163.  beq .noscream
  164.  
  165.  sub.b d2,numlives(a0)
  166.  bgt.s .notdeadyet
  167.  
  168.  movem.l d0-d7/a0-a6,-(a7)
  169.  sub.l #ObjectPoints,a1
  170.  add.l #ObjRotated,a1
  171.  move.l (a1),Noisex
  172.  move.w #200,Noisevol
  173.  move.w screamsound,Samplenum
  174.  move.b #1,chanpick
  175.  clr.b notifplaying
  176.  st backbeat
  177.  jsr MakeSomeNoise
  178.  movem.l (a7)+,d0-d7/a0-a6
  179.  move.l deadframe,8(a0)
  180.  rts
  181.  
  182. .notdeadyet:
  183.  clr.b damagetaken(a0)
  184.  
  185.  movem.l d0-d7/a0-a6,-(a7)
  186.  sub.l #ObjectPoints,a1
  187.  add.l #ObjRotated,a1
  188.  move.l (a1),Noisex
  189.  move.w #200,Noisevol
  190.  move.w screamsound,Samplenum
  191.  move.b #1,chanpick
  192.  clr.b notifplaying
  193.  st backbeat
  194.  jsr MakeSomeNoise
  195.  movem.l (a7)+,d0-d7/a0-a6
  196.  
  197. .noscream
  198.  
  199.  move.l PLR1_Roompt,ToRoom
  200.  move.l objroom,FromRoom
  201.  move.w newx,oldx
  202.  move.w newz,oldz
  203.  move.w PLR1_xoff,newx
  204.  move.w PLR1_zoff,newz
  205.  jsr CanItBeSeen
  206.  
  207.  tst.b CanSee
  208.  beq .carryonprowling
  209.  
  210.  move.b #1,17(a0)
  211.  
  212. .carryonprowling:
  213.  
  214. .thisonedead:
  215.  rts
  216.  
  217. Solo_Attack:
  218.  
  219.  move.l #ZoneAdds,a5
  220.  move.l (a5,d2.w*4),objroom
  221.  move.w PLR1_xoff,newx
  222.  move.w PLR1_zoff,newz
  223.  move.w (a0),d1
  224.  move.l #ObjRotated,a6
  225.  move.l #ObjectPoints,a1
  226.  lea (a1,d1.w*8),a1
  227.  lea (a6,d1.w*8),a6
  228.  move.w (a1),oldx
  229.  move.w 4(a1),oldz
  230.  move.w maxspd(a0),d2
  231.  muls.w TempFrames,d2
  232.  move.w d2,speed
  233.  move.w #50,Range
  234.  move.w 4(a0),d0
  235.  ext.l d0
  236.  asl.l #7,d0
  237.  move.l d0,newy
  238.  
  239.  movem.l d0/a0/a1/a3/a4/d7,-(a7)
  240.  clr.b canshove
  241.  clr.b GotThere
  242.  jsr HeadTowards
  243.  move.w #%1000000000,wallflags
  244.  Jsr MoveObject
  245.  movem.l (a7)+,d0/a0/a1/a3/a4/d7
  246.  
  247.  move.l objroom,a2
  248.  move.w (a2),12(a0)
  249.  move.w 12(a2),CurrCPt(a0)
  250.  
  251.  move.w newx,(a1)
  252.  move.w newz,4(a1)
  253.  move.w 10(a2),2(a0)
  254.  move.l 2(a2),d0
  255.  asr.l #7,d0
  256.  sub.w nasheight,d0
  257.  move.w d0,4(a0)
  258.  
  259.  move.b damagetaken(a0),d2
  260.  beq .noscream
  261.  
  262.  sub.b d2,numlives(a0)
  263.  bgt.s .notdeadyet
  264.  
  265.  movem.l d0-d7/a0-a6,-(a7)
  266.  move.l (a6),Noisex
  267.  move.w #200,Noisevol
  268.  move.w screamsound,Samplenum
  269.  move.b #1,chanpick
  270.  clr.b notifplaying
  271.  st backbeat
  272.  jsr MakeSomeNoise
  273.  movem.l (a7)+,d0-d7/a0-a6
  274.  move.l deadframe,8(a0)
  275.  rts 
  276.  
  277. .notdeadyet:
  278.  clr.b damagetaken(a0)
  279.  
  280.  movem.l d0-d7/a0-a6,-(a7)
  281.  move.l (a6),Noisex
  282.  move.w #200,Noisevol
  283.  move.w screamsound,Samplenum
  284.  move.b #1,chanpick
  285.  clr.b notifplaying
  286.  st backbeat
  287.  jsr MakeSomeNoise
  288.  movem.l (a7)+,d0-d7/a0-a6
  289.  
  290.  bra .cantshoot
  291.  
  292. .noscream:
  293.  
  294.  tst.b gotgun
  295.  beq .cantshoot
  296.  
  297.  tst.w SecTimer(a0)
  298.  blt.s .canshoot
  299.  move.w TempFrames,d0
  300.  sub.w d0,SecTimer(a0)
  301.  bra .cantshoot
  302. .canshoot:
  303.  move.l #PlayerShotData,a5
  304.  move.w #19,d1
  305. .findonefree
  306.  move.w 12(a5),d0
  307.  blt.s .foundonefree
  308.  adda.w #64,a5
  309.  dbra d1,.findonefree
  310.  
  311.  bra .cantshoot
  312.  
  313. .foundonefree:
  314.  
  315.  move.l (a6),Noisex
  316.  move.w #200,Noisevol
  317.  move.w #9,Samplenum
  318.  move.b #1,chanpick
  319.  clr.b notifplaying
  320.  st shotsize(a5)
  321.  move.b #10,shotpower(a5)
  322.  movem.l a5/a1/a0,-(a7)
  323.  jsr MakeSomeNoise
  324.  movem.l (a7)+,a5/a1/a0
  325.  
  326.  move.l #ObjectPoints,a2
  327.  move.w (a5),d1
  328.  lea (a2,d1.w*8),a2
  329.  move.w (a1),oldx
  330.  move.w 4(a1),oldz
  331.  move.w PLR1_xoff,newx
  332.  move.w PLR1_zoff,newz
  333.  move.w #16,speed
  334.  move.w #0,Range
  335.  movem.l a5/a0,-(a7)
  336.  jsr HeadTowards
  337.  movem.l (a7)+,a5/a0
  338.  move.w newx,d0
  339.  move.w d0,(a2)
  340.  sub.w oldx,d0
  341.  move.w d0,shotxvel(a5)
  342.  move.w newz,d0
  343.  move.w d0,4(a2)
  344.  sub.w oldz,d0
  345.  move.w d0,shotzvel(a5)
  346.  
  347.  move.l #%00100000,EnemyFlags(a5)
  348.  move.w 12(a0),12(a5)
  349.  move.w 4(a0),d0
  350.  add.w #6,d0
  351.  move.w d0,4(a5)
  352.  ext.l d0
  353.  asl.l #7,d0
  354.  move.l d0,accypos(a5)
  355.  move.l PLR1_yoff,d1
  356.  sub.l d0,d1
  357.  move.w distaway,d0
  358.  asr.w #4,d0
  359.  bgt.s .okokokok
  360.  moveq #1,d0
  361. .okokokok
  362.  divs d0,d1
  363.  move.w d1,shotyvel(a5)
  364.  jsr GetRand
  365.  and.w #7,d0
  366.  add.w #50,d0
  367.  move.w d0,SecTimer(a0)
  368.  
  369. .cantshoot:
  370.  
  371.  tst.b GotThere
  372.  beq.s .noteatyou
  373.  
  374.  move.w #1,chanpick
  375.  move.w (a6),Noisex
  376.  move.w 2(a6),Noisez
  377.  move.w #50,Noisevol
  378.  move.w #2,Samplenum
  379.  st notifplaying
  380.  move.l a0,-(a7)
  381.  jsr MakeSomeNoise
  382.  move.l (a7)+,a0
  383.  
  384.  move.l #Cheese,FacesPtr
  385.  move.w #3,Cheese
  386.  move.w #-1,FacesCounter
  387.  move.w TempFrames,d0
  388.  sub.w d0,Energy
  389.  bra .carryonattack
  390. .noteatyou:
  391.  
  392.  move.l PLR1_Roompt,ToRoom
  393.  move.l objroom,FromRoom
  394.  move.w newx,oldx
  395.  move.w newz,oldz
  396.  move.w PLR1_xoff,newx
  397.  move.w PLR1_zoff,newz
  398.  jsr CanItBeSeen
  399.  
  400.  tst.b CanSee
  401.  bne .carryonattack
  402.  
  403.  move.b #0,17(a0)
  404.  
  405. .carryonattack:
  406.  
  407. .thisonedead
  408.  
  409.  rts
  410.  
  411. deadframe: dc.l 0
  412. screamsound: dc.w 0
  413. nasheight: dc.w 0
  414.  
  415. Prowl_a:
  416. ; Head towards a control point, and
  417. ; once there, pick another one at
  418. ; random and go all the way there
  419. ; instead.
  420.  
  421.  move.w 12(a0),d2
  422.  blt .thisonedead
  423.  
  424.  move.l #ZoneAdds,a5
  425.  move.l (a5,d2.w*4),objroom
  426.  
  427.  move.w CurrCPt(a0),d0
  428.  move.w TargCPt(a0),d1
  429.  
  430.  jsr GetNextCPt
  431.  
  432. ; d0 contains nearest CPt to go for.
  433.  
  434.  move.l #CPtPos,a5
  435.  move.w (a5,d0.w*4),newx
  436.  move.w 2(a5,d0.w*4),newz
  437.  
  438.  move.l alframe,8(a0)
  439.  move.w (a0),d1
  440.  move.l #ObjectPoints,a1
  441.  lea (a1,d1.w*8),a1
  442.  move.w (a1),oldx
  443.  move.w 4(a1),oldz
  444.  
  445.  move.w maxspd(a0),d2
  446.  muls TempFrames,d2
  447.  move.w d2,speed
  448.  move.w #20,Range
  449.  
  450.  movem.l d0/a0/a1/a3/a4/d7,-(a7)
  451.  clr.b canshove
  452.  jsr HeadTowards
  453.  move.w #%1000000000,wallflags
  454.  Jsr MoveObject
  455.  movem.l (a7)+,d0/a0/a1/a3/a4/d7
  456.  
  457.  move.l objroom,a2
  458.  move.w (a2),12(a0)
  459.  
  460.  move.w newx,(a1)
  461.  move.w newz,4(a1)
  462.  
  463.  tst.b GotThere
  464.  beq.s .notatnextptyet
  465.  
  466.  move.w d0,CurrCPt(a0)
  467.  cmp.w TargCPt(a0),d0
  468.  bne.s .notatnextptyet
  469.  
  470.  move.w nextCPt,d0
  471.  move.w d0,TargCPt(a0)
  472.  add.w #1,d0
  473.  cmp.w NumCPts,d0
  474.  blt.s .stillsomemore
  475.  move.w #0,d0
  476. .stillsomemore:
  477.  move.w d0,nextCPt
  478.  
  479. .notatnextptyet:
  480.  
  481.  move.w 10(a2),2(a0)
  482.  move.l 2(a2),d0
  483.  sub.l #6400,d0
  484.  asr.l #7,d0
  485.  move.w d0,4(a0)
  486.  
  487.  move.l PLR1_Roompt,ToRoom
  488.  move.l objroom,FromRoom
  489.  move.w newx,oldx
  490.  move.w newz,oldz
  491.  move.w PLR1_xoff,newx
  492.  move.w PLR1_zoff,newz
  493.  jsr CanItBeSeen
  494.  
  495.  tst.b CanSee
  496.  beq .carryonprowling
  497.  
  498.  move.b #1,17(a0)
  499.  
  500. .carryonprowling:
  501.  
  502. .thisonedead:
  503.  rts
  504.  
  505.